package com.xlh.service.course;

import com.xlh.dto.course.TemplateDTO;
import com.xlh.dto.course.TemplateDataDTO;
import com.xlh.dto.course.TemplateDetailDTO;
import com.xlh.dto.course.TemplateInfoDTO;
import com.xlh.enums.ResourcesTypeEnum;
import com.xlh.enums.course.TemplateTypeEnum;
import com.xlh.param.course.TemplateInfoParam;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 模版
 * <p>
 * Created by lx on 2019/1/28.
 */
public interface TemplateService {

    /**
     * 获取当前用户的模版数据
     *
     * @param userId   用户id
     * @param typeEnum 模版类型枚举
     * @return
     */
    Map<String, TemplateDTO> queryTemplateInfo(Long userId, TemplateTypeEnum typeEnum);

    /**
     * @param userId
     * @param typeEnum
     * @return
     */
    List<TemplateInfoDTO> queryTemplates(Long userId, TemplateTypeEnum typeEnum);

    /**
     * 修改模板信息
     *
     * @param userId   用户id
     * @param typeEnum 模板类型枚举
     * @param params   模板参数
     */
    void updateTemplateInfo(Long userId, TemplateTypeEnum typeEnum, List<TemplateInfoParam> params);

    /**
     * 获取当前用户的模版数据
     *
     * @param userId   用户id
     * @param typeEnum 模版类型枚举
     * @return
     */
    TemplateDataDTO queryTemplate(Long userId, TemplateTypeEnum typeEnum);

    /**
     * 创建/编辑模版
     *
     * @param file              上传的文件
     * @param editorContent     编辑器内容
     * @param typeEnum          类型枚举
     * @param resourcesTypeEnum 资源类型枚举
     */
    void createOrUpdateTemplate(MultipartFile file, String editorContent,
                                TemplateTypeEnum typeEnum, ResourcesTypeEnum resourcesTypeEnum);

    /**
     * 删除模板资源
     *
     * @param typeEnum 模板类型枚举
     */
    void deleteTemplateResources(TemplateTypeEnum typeEnum);

    /**
     * 重置通用模板
     *
     * @param templateTypeEnum  模板类型枚举
     * @param resourcesTypeEnum 资源类型枚举
     */
    void resetCommonTemplate(TemplateTypeEnum templateTypeEnum, ResourcesTypeEnum resourcesTypeEnum);

    /**
     * 批量删除模板
     *
     * @param userIds 用户id集合
     */
    List<String> deleteBatchTemplate(List<Long> userIds);

    /**
     * 检查资源
     *
     * @param type     类型
     * @param fileName 文件名称
     * @return 文件全路径+名称
     */
    String checkResource(Integer type, String fileName);

    /**
     * 获取模板
     *
     * @param userIds
     * @param type
     * @param resourceTypes
     * @return
     */
    List<TemplateDetailDTO> getTemplateInfo(List<Long> userIds, Integer type, List<Integer> resourceTypes);

    /**
     * 插入模板
     *
     * @param userId     用户id
     * @param type       类型
     * @param resourceId 资源id
     */
    void insertTemplate(Long userId, Integer type, Long resourceId);

    /**
     * 插入资源
     *
     * @param fileName 文件名
     * @param name     资源名
     * @param remark   备注
     * @param type     类型
     * @return
     */
    Long insertResource(String fileName, String name, String remark, Integer type);

}
